{
    let a = 1;
    let b = {b: 2};
    with(b) {
        a = b + 1;
    }
    let c = b;
}

/*
pass 1
        line_num 0
        enter_scope 1
        line_num 1
        enter_scope 2
        line_num 2
        push_i32 1
        scope_put_var_init a,2
        line_num 3
        object
        push_i32 2
        define_field a
        scope_put_var_init b,2
        line_num 4
        scope_get_var b,2
        enter_scope 3
        to_object
        put_loc 3: "<with>"
        undefined
        put_loc 0: "<ret>"
        enter_scope 4
        line_num 5
        scope_make_ref a,0:108,4
        push_i32 3
        label 0:108
  108:  insert3
        put_ref_value
        put_loc 0: "<ret>"
        leave_scope 4
        line_num 6
        leave_scope 3
        leave_scope 2
        line_num 7
        get_loc 0: "<ret>"
        return

pass 2
        line_num 0
        line_num 1
        set_loc_uninitialized 2: b
        set_loc_uninitialized 1: a
        line_num 2
        push_i32 1
        put_loc 1: a
        line_num 3
        object
        push_i32 2
        define_field a
        put_loc 2: b
        line_num 4
        get_loc_check 2: b
        set_loc_uninitialized 3: "<with>"
        to_object
        put_loc 3: "<with>"
        undefined
        put_loc 0: "<ret>"
        line_num 5
        get_loc 3: "<with>"
        with_make_ref a,1:97,1
        make_loc_ref a,1
        label 1:97
   97:  push_i32 3
        label 0:107
  107:  insert3
        put_ref_value
        put_loc 0: "<ret>"
        line_num 6
        line_num 7
        get_loc 0: "<ret>"
        return

./with.js:1: function: <eval>
  locals:
    0: var <ret>
    1: let a [level:2 next:-1]
    2: let b [level:2 next:1]
    3: var <with> [level:3 next:2]
  stack_size: 4
  opcodes:
        set_loc_uninitialized 2: b
        set_loc_uninitialized 1: a
        push_1 1
        put_loc1 1: a
        object
        push_2 2
        define_field a
        put_loc2 2: b
        get_loc_check 2: b
        set_loc_uninitialized 3: "<with>"
        to_object
        put_loc3 3: "<with>"
        undefined
        put_loc0 0: "<ret>"
        get_loc3 3: "<with>"
        with_make_ref a,44,1
        make_loc_ref a,1
   44:  push_3 3
        insert3
        put_ref_value
        set_loc0 0: "<ret>"
        return
 */